<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#caps{
				color: red
			}
		</style>
		<script type="text/javascript">
			function change(num){
				let di1=['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']
				let di2=['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟', '兆']
				let di3=['角','分']
				let parts=num.split(".")//bank已经被规范化
				let integer=parts[0]//获得整数部分;将字符串按小数点分割成数组
				var decimalPart;
				if(parts.length>1){
					decimalPart=parts[1].substring(0,2)
					while (decimalPart.length < 2) {
					decimalPart += '0';
				}
				} else {
					decimalPart = '00';
				}//找出小数部分
				let chineseInteger = '';//给整数大写赋空值
				const length = integer.length;//得出整数部分的长度
				for (let i = 0; i < length; i++) {
					const digit = parseInt(integer[i]);
					const position = length - i - 1
					if (digit !== 0) {
						chineseInteger +=di1[digit] + di2[position];
					} else {
						// 处理零的情况
						if (i < length - 1 && parseInt(integer[i + 1]) !== 0
						 && !chineseInteger.endsWith('零')) {
							chineseInteger += '零';
						}}}
				if (chineseInteger === '') {chineseInteger = '零';}
				// 转换小数部分
				let chineseDecimal = '';
				for (let i = 0; i < decimalPart.length; i++) {
					const digit = parseInt(decimalPart[i]);
					if (digit !== 0) {
						chineseDecimal += di1[digit] + di3[i];
					}}// 组合结果
				let result = chineseInteger + '元';
				if (chineseDecimal === '') {
					result += '零角零分';
				} else {
					result += chineseDecimal;
				}
				return result;}
			</script>
		
	</head>
	<body>
		<form>
			输入数字：<input type="text" name="" id="num" value="" />
			<input type="button" value="转换" onclick="fun()"/>
		</form>
			银行金额：<span id="bank"></span>
			<br>
			大写金额：<span id="caps"></span>
			<script type="text/javascript">
				function fun(){
					let num=document.getElementById("num").value
					let reg= /^0*(\d{1,13})(\.\d+)?$/
					let bank=document.getElementById("bank").value
					if(num.trim()==""||isNaN(num)){
						alert("输入的数据不合法！！！")
					}//对输入空格和输入字母进行不合法设定
					document.getElementById("bank").innerHTML=num
					let match = num.match(reg);
					document.getElementById("bank").innerHTML=match
					let integerPart = match[1];//整数部分
					let decimalPart =
					 match[2] ? match[2].substring(1) : '';//小数部分
					if(decimalPart.length>2){
						decimalPart=decimalPart.substring(0,2)
					}//当小数部分大于两位时,只保留两位
					let res1=""
					for (var i=integerPart.length;i>0; i=i-3) {
						if(i-3<=0){
							res1=integerPart.substring(0,i)+res1
						}else{
							res1 =","+integerPart.substring(i-3,i)+res1
						}
					}
					let processedAmount = decimalPart ? `${res1}.${decimalPart}` 
					: `${res1}.00`;
					// 是否有小数部分,如果有,则整数部分.小数;如果没有则整数.00
					document.getElementById("bank").innerHTML=processedAmount
					let cap=change(processedAmount)
					document.getElementById("caps").innerHTML=cap
				}
			</script>
	</body>
</html>
